package com.knowledge.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.knowledge.business.domain.KnowledgeDocumentSegment;

import java.util.List;

/**
 * 文档分段Service接口
 *
 * @author zhaoyk
 * @date 2025-09-14
 */
public interface IKnowledgeDocumentSegmentService extends IService<KnowledgeDocumentSegment> {
    /**
     * 查询文档分段
     *
     * @param id 文档分段主键
     * @return 文档分段
     */
    public KnowledgeDocumentSegment selectKnowledgeDocumentSegmentById(String id);

    /**
     * 对文档内容进行分段处理
     *
     * @param documentId      文档ID
     * @param documentContent 文档内容
     * @return 分段列表
     */
    public List<KnowledgeDocumentSegment> segmentDocumentContent(String documentId, String documentType, String documentContent) throws Exception;

    /**
     * 查询文档分段列表
     *
     * @param knowledgeDocumentSegment 文档分段
     * @return 文档分段集合
     */
    public List<KnowledgeDocumentSegment> selectKnowledgeDocumentSegmentList(KnowledgeDocumentSegment knowledgeDocumentSegment);

    /**
     * 新增文档分段
     *
     * @param knowledgeDocumentSegment 文档分段
     * @return 结果
     */
    public int insertKnowledgeDocumentSegment(KnowledgeDocumentSegment knowledgeDocumentSegment);

    /**
     * 修改文档分段
     *
     * @param knowledgeDocumentSegment 文档分段
     * @return 结果
     */
    public int updateKnowledgeDocumentSegment(KnowledgeDocumentSegment knowledgeDocumentSegment);

    /**
     * 批量删除文档分段
     *
     * @param ids 需要删除的文档分段主键集合
     * @return 结果
     */
    public int deleteKnowledgeDocumentSegmentByIds(String[] ids);

    /**
     * 删除文档分段信息
     *
     * @param id 文档分段主键
     * @return 结果
     */
    public int deleteKnowledgeDocumentSegmentById(String id);

    /**
     * 对分段内容进行向量化处理
     *
     * @param segment 分段对象
     * @return 向量数据
     */
    Boolean vectorizeSegmentContent(KnowledgeDocumentSegment segment);

    /**
     * 将byte数组转换为Float列表
     *
     * @param bytes byte数组
     * @return Float列表
     */
    List<Float> byteArrayToFloatList(byte[] bytes);
}
